Skip to content

Conversation

@AKAPUCH
Copy link
Contributor

@AKAPUCH AKAPUCH commented May 18, 2023

스텝별 작업목록

  • 화면 UI 구현
  • section 활용 테이블뷰 구현
  • 불필요한 코드 정리, 주석 첨부
  • 모듈화

학습키워드

  • section, tableview, model, uitableviewcell

고민과 해결

section 구현

  • section을 구현하기 위해서는 numberOfSections, titleForHeaderInSection 메서드를 추가로 구현해야 했습니다.
  • 또, tableView 생성시 init에 style 파라미터로 .grouped를 설정해 견본과 같은 레이아웃을 완성할 수 있었습니다.
  • title 유무 판단, 특정 셀 한정 로직을 구현했으나 더 간단한 논리가 있지 않을까 고민중입니다.

테이블뷰 높이 이미지에 맞게 설정 (step2에서 개선 예정)

  • 현재 구현한 테이블셀의 높이는 max(그림 높이, 텍스트 높이)로 결정됩니다.
  • 레퍼런스 코드에서는 직접 셀 높이를 지정하기도 했으나, 이미지 크기에 따라 동적으로 조절 되는 것이 더 좋다고 생각해 적용하려고 시도중입니다.

프로필 셀 라벨 텍스트 2줄 만들기 (step2에서 반영 예정)

  • 외부 데이터 모델에 줄바꿈 문자를 넣었으나, 실제 화면에서는 적용되지 않았습니다.
  • 레퍼런스 코드를 확인한 결과 기본 제공 UITableViewCell의 init 파라미터 style을 지정하고, subtitle 속성에서 적용하는 것이었습니다.

셀 이미지 공백 시 처리 (step2에서 개선 예정)

  • 구현할 때 공백 이미지가 있는 줄 모르고 외부 데이터 모델에 imageName을 nil로 설정한 상태입니다.

코드 리팩토링 (step2에서 반영 예정)

  • 모듈화, 불필요 코드 삭제 예정입니다.
  • 레퍼런스처럼 공통 속성 클래스를 만들어 관리하는 것을 고려중입니다.

레퍼런스 코드 분석

프로젝트 구조

  • mvc 디자인 패턴을 채택하였으며 model중 재사용 객체들, 외부 데이터 모델(실제에서는 JSON 디코더), 편의성 Extension을 util 폴더에 그룹핑되어 있습니다.

느낀 점

Util 그룹

  • 공통으로 쓰이는 객체나 변수들을 따로 관리하는 파일 생성 -> 수정사항 발생시 한 파일만 바꾸면 되니 유지보수하기 매우 용이하고 컨트롤러의 부담을 줄여줄 수 있음.
  • 왜 만들 때 아예 UIImage로 만들면 편할텐데 굳이 이미지 이름을 저장한걸까? -> model에는 UIKit이 들어가면 안됨.( MVC의 관점에서 Model과 View는 서로 소통하면 안되므로 )
  • 정의된 객체도 익스텐션을 재정의하여 더 편리하게 사용할 수 있다.(UIColor의 16진수 파라미터 편의 생성자)

Controller 그룹

  • 내부 코드가 모델에서 가져온 데이터를 가져오는 계산속성 - 계산속성을 활용하는 메서드 - 비즈니스 로직이 구현된 프로토콜 메서드로 되어 있음.
  • 계산속성을 활용하면 lazy를 남발하지 않고도 깔끔하게 변수들을 정의할 수 있음.
  • 자주 쓰는 사용자 정의 타입들은 타입 알리아스로 더욱 편하게 사용~
  • 자주 쓰는 셀만 커스텀 셀을 재사용하고 프로필 셀처럼 재사용안하는 셀은 기본 제공 셀 사용

의문점🤔

  • Specs.swift에서 Color 구조체는 왜 정의한걸까? tint 하나를 정의하기 위해서?
  • 왜 FBMeBaseViewController - FBMeViewController 상속구조로 만든걸까?
    • 부모 클래스에는 달랑 View backgroundColor만 정의되어 있음.
  • view인 customCell에서 극도로 코드를 절제하고 컨트롤러에서 구현하고 있는데, 왜 그렇게 한 걸까?
    • 폰트색, 폰트 종류, identifier를 지정해준 것 외에는 커스텀하지 않음.
    • 솔직히 willDisplay에서 예외로직 외에 악세서리 타입정도는 지정해줘도 되지 않았나 싶음..
  • 테이블뷰 프로토콜 메서드 heightForRowAt은 왜 굳이 구현한건지?
    • 높이를 지정해주지 않아도 그림 너비로 인해 저절로 조절됨..

@AKAPUCH AKAPUCH requested review from Jung2un and OpenBible3438 May 18, 2023 15:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant